package com.github.data_manage.domain.vo

import java.math.BigDecimal

data class FundValueVo(
    val fundId: Int,
    val fundName: String,
    val value: BigDecimal
)

data class ContrastValueVo(
    val contrastId: Int,
    val contrastName: String,
    val value: BigDecimal
)

// 用于基金深度调研信息图表展示
data class FirmStrategyFundAumVo(
    val fireAum: BigDecimal? = BigDecimal.ZERO,
    val strategyAum: BigDecimal? = BigDecimal.ZERO,
    val fundAum: BigDecimal? = BigDecimal.ZERO,
)

data class StrategyAumCumulativeReturnVo(
    val strategyAum: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToInflowAppro: BigDecimal? = BigDecimal.ZERO,
    val fundNav: BigDecimal? = BigDecimal.ZERO,
)

data class StrategyAumMonthlyVo(
    val strategyAum: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToPerformance: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToInflowAppro: BigDecimal? = BigDecimal.ZERO,
)

data class FundAumCumulativeReturnVo(
    val fundAum: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToInflowAppro: BigDecimal? = BigDecimal.ZERO,
    val fundNav: BigDecimal? = BigDecimal.ZERO,
)

data class FundAumMonthlyFlowVo(
    val fundAum: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToPerformance: BigDecimal? = BigDecimal.ZERO,
    val changeInStrategyAumDueToInflowAppro: BigDecimal? = BigDecimal.ZERO,
)

data class PerformanceAnalysisIndicesVo(
    val fundReturnInfo: FundValueVo,
    val contrastReturnInfos: MutableList<ContrastValueVo>
)


data class PerformanceOverDifferentStressPeriodVo(
    val fundBusinessInfo: FundValueVo,
    val contrastBusinessInfos: List<ContrastValueVo>
)


data class TwelveRollingPerformanceMetricsVo(
    val fundName: String,
    val fundTwelveMRollPerf: BigDecimal? = BigDecimal.ZERO,
    val fundTwelveMRollVol: BigDecimal? = BigDecimal.ZERO,
    val contrastInfos: List<ContrastRollPerfAndVolVo>,
)

data class ContrastRollPerfAndVolVo(
    val contrastId: Int,
    val contrastName: String,
    var contrastRollPerf: BigDecimal? = BigDecimal.ZERO,
    var contrastRollVol: BigDecimal? = BigDecimal.ZERO,
)

data class ThirtySixRollingPerformanceMetricsVo(
    val fundName: String,
    val fundThirtySixMRollPerf: BigDecimal? = BigDecimal.ZERO,
    val fundThirtySixMRollVol: BigDecimal? = BigDecimal.ZERO,
    val contrastInfos: List<ContrastRollPerfAndVolVo> = emptyList(),
)

data class ContrastRollBetaAndCorrelVo(
    val contrastId: Int,
    val contrastName: String,
    var contrastRollBeta: BigDecimal? = BigDecimal.ZERO,
    var contrastRollCorrel: BigDecimal? = BigDecimal.ZERO,
)

data class Contrast3M6MOutUnderPerfVo(
    val contrastId: Int,
    val contrastName: String,
    val threeMOutUnderPerf: BigDecimal? = BigDecimal.ZERO,
    val sixMOutUnderPerf: BigDecimal? = BigDecimal.ZERO
)

data class Contrast12M36MOutUnderPerfVo(
    val contrastId: Int,
    val contrastName: String,
    val twelveMOutUnderPerf: BigDecimal? = BigDecimal.ZERO,
    val thirtySixMOutUnderPerf: BigDecimal? = BigDecimal.ZERO,
)

data class NetExposureCumulativePerformanceVo(
    val exposureNet: BigDecimal? = BigDecimal.ZERO,
    val averageNet: BigDecimal? = BigDecimal.ZERO,
    val exposureNetLimit1: BigDecimal? = BigDecimal.ZERO,
    val exposureNetLimit2: BigDecimal? = BigDecimal.ZERO,
    val fundNav: BigDecimal? = BigDecimal.ZERO,
    val contrastNavInfos: MutableList<ContrastValueVo> = mutableListOf(),
)


data class GrossExposureCumulativePerformanceVo(
    val exposureGross: BigDecimal? = BigDecimal.ZERO,
    val averageGross: BigDecimal? = BigDecimal.ZERO,
    val exposureGrossLimit1: BigDecimal? = BigDecimal.ZERO,
    val exposureGrossLimit2: BigDecimal? = BigDecimal.ZERO,
    val fundNav: BigDecimal? = BigDecimal.ZERO,
    val contrastNavInfos: MutableList<ContrastValueVo> = mutableListOf(),
)

data class LongShortExposureCumulativePerformanceVo(
    val exposureLong: BigDecimal? = BigDecimal.ZERO,
    val exposureShort: BigDecimal? = BigDecimal.ZERO,
    val averageLong: BigDecimal? = BigDecimal.ZERO,
    val averageShort: BigDecimal? = BigDecimal.ZERO,
    val longCumulative: BigDecimal? = BigDecimal.ZERO,
    val shortCumulative: BigDecimal? = BigDecimal.ZERO
)

data class LongShortExposureByAssetClassVo(

    val exposureEquitiesL: BigDecimal? = BigDecimal.ZERO,

    val exposureFixedIncomeL: BigDecimal? = BigDecimal.ZERO,

    val exposureCurrenciesFXL: BigDecimal? = BigDecimal.ZERO,

    val exposureCommoditiesL: BigDecimal? = BigDecimal.ZERO,

    val exposureRealEstateAssetClassL: BigDecimal? = BigDecimal.ZERO,

    val exposureOthersAssetClassL: BigDecimal? = BigDecimal.ZERO,

    val exposureAlternativeInvestmentsL: BigDecimal? = BigDecimal.ZERO,

    val exposureEquitiesS: BigDecimal? = BigDecimal.ZERO,

    val exposureFixedIncomeS: BigDecimal? = BigDecimal.ZERO,

    val exposureCurrenciesFXS: BigDecimal? = BigDecimal.ZERO,

    val exposureCommoditiesS: BigDecimal? = BigDecimal.ZERO,

    val exposureRealEstateAssetClassS: BigDecimal? = BigDecimal.ZERO,

    val exposureOtherAssetClassS: BigDecimal? = BigDecimal.ZERO,

    val exposureAlternativeInvestmentsS: BigDecimal? = BigDecimal.ZERO,
)

data class ShortExposureCumulativePerformanceVo(
    val exposureShort: BigDecimal? = BigDecimal.ZERO,
    val averageShort: BigDecimal? = BigDecimal.ZERO,
    val shortCumulative: BigDecimal? = BigDecimal.ZERO,
)


data class ConcentrationOfTopPositionsOneVo(
    val top1LongPositionExposure: BigDecimal? = BigDecimal.ZERO,
    val top1ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5Longs: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5Shorts: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10Longs: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10Shorts: BigDecimal? = BigDecimal.ZERO,
    val exposureLongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureShortLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5LongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5ShortLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10LongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10ShortLimit: BigDecimal? = BigDecimal.ZERO,
)


data class ConcentrationOfTopPositionsTwoVo(
    val top1LongPositionExposure: BigDecimal? = BigDecimal.ZERO,
    val top1ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,
    val exposureLongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureShortLimit: BigDecimal? = BigDecimal.ZERO,
    val topOneLongDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val topOneShortDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val topFiveLongDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val topFiveShortDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val topTenLongDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val topTenShortDivideTotal: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10Longs: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10Shorts: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10LongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop10ShortLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5Longs: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5Shorts: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5LongLimit: BigDecimal? = BigDecimal.ZERO,
    val exposureTop5ShortLimit: BigDecimal? = BigDecimal.ZERO,
)

data class NumberOfPositionsGrossExposureVo(
    val ofLong: BigDecimal? = BigDecimal.ZERO,
    val ofShort: BigDecimal? = BigDecimal.ZERO,
    val exposureLong: BigDecimal? = BigDecimal.ZERO,
    val exposureShort: BigDecimal? = BigDecimal.ZERO,
)

data class LargestLongPositionsVo(
    val top1LongPositionName: String? = null,

    val top1LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top2LongPositionName: String? = null,

    val top2LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top3LongPositionName: String? = null,

    val top3LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top4LongPositionName: String? = null,

    val top4LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top5LongPositionName: String? = null,

    val top5LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top6LongPositionName: String? = null,

    val top6LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top7LongPositionName: String? = null,

    val top7LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top8LongPositionName: String? = null,

    val top8LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top9LongPositionName: String? = null,

    val top9LongPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top10LongPositionName: String? = null,

    val top10LongPositionExposure: BigDecimal? = BigDecimal.ZERO

)

data class LargestShortPositionsVo(
    val top1ShortPositionName: String? = null,

    val top1ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top2ShortPositionName: String? = null,

    val top2ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top3ShortPositionName: String? = null,

    val top3ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top4ShortPositionName: String? = null,

    val top4ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top5ShortPositionName: String? = null,

    val top5ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top6ShortPositionName: String? = null,

    val top6ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top7ShortPositionName: String? = null,

    val top7ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top8ShortPositionName: String? = null,

    val top8ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top9ShortPositionName: String? = null,

    val top9ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,

    val top10ShortPositionName: String? = null,

    val top10ShortPositionExposure: BigDecimal? = BigDecimal.ZERO,
)


data class OverallBookAnnualAlphaBetaVo(
    var alphaAnnual: BigDecimal? = BigDecimal.ZERO,
    var betaAnnual: BigDecimal? = BigDecimal.ZERO,
    val alphaCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class OverallBookQuarterlyAlphaBetaVo(
    var alphaQuarterly: BigDecimal? = BigDecimal.ZERO,
    var betaQuarterly: BigDecimal? = BigDecimal.ZERO,
    val alphaCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class OverallBookAnnualLongShortVo(
    var longAnnual: BigDecimal? = BigDecimal.ZERO,
    var shortAnnual: BigDecimal? = BigDecimal.ZERO,
    val longCumulative: BigDecimal? = BigDecimal.ZERO,
    val shortCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class OverallBookQuarterlyLongShortVo(
    var longQuarterly: BigDecimal? = BigDecimal.ZERO,
    var shortQuarterly: BigDecimal? = BigDecimal.ZERO,
    val longCumulative: BigDecimal? = BigDecimal.ZERO,
    val shortCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class LongBookAnnualAlphaBetaVo(
    var alphaLongAnnual: BigDecimal? = BigDecimal.ZERO,
    var betaLongAnnual: BigDecimal? = BigDecimal.ZERO,
    val alphaLongCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaLongCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class LongBookQuarterlyAlphaBetaVo(
    var alphaLongQuarterly: BigDecimal? = BigDecimal.ZERO,
    var betaLongQuarterly: BigDecimal? = BigDecimal.ZERO,
    val alphaLongCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaLongCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class ShortBookAnnualAlphaBetaVo(
    var alphaShortAnnual: BigDecimal? = BigDecimal.ZERO,
    var betaShortAnnual: BigDecimal? = BigDecimal.ZERO,
    val alphaShortCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaShortCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class ShortBookQuarterlyAlphaBetaVo(
    var alphaShortQuarterly: BigDecimal? = BigDecimal.ZERO,
    var betaShortQuarterly: BigDecimal? = BigDecimal.ZERO,
    val alphaShortCumulative: BigDecimal? = BigDecimal.ZERO,
    val betaShortCumulative: BigDecimal? = BigDecimal.ZERO,
)

data class AnnualPnLAttributionByCountryVo(
    val uSAnnual: BigDecimal? = BigDecimal.ZERO,
    val canadaAnnual: BigDecimal? = BigDecimal.ZERO,
    val brazilAnnual: BigDecimal? = BigDecimal.ZERO,
    val mexicoAnnual: BigDecimal? = BigDecimal.ZERO,
    val argentinaAnnual: BigDecimal? = BigDecimal.ZERO,
    val chileAnnual: BigDecimal? = BigDecimal.ZERO,
    val colombiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val peruAnnual: BigDecimal? = BigDecimal.ZERO,
    val uKAnnual: BigDecimal? = BigDecimal.ZERO,
    val germanyAnnual: BigDecimal? = BigDecimal.ZERO,
    val franceAnnual: BigDecimal? = BigDecimal.ZERO,
    val switzerlandAnnual: BigDecimal? = BigDecimal.ZERO,
    val netherlandsAnnual: BigDecimal? = BigDecimal.ZERO,
    val italyAnnual: BigDecimal? = BigDecimal.ZERO,
    val spainAnnual: BigDecimal? = BigDecimal.ZERO,
    val swedenAnnual: BigDecimal? = BigDecimal.ZERO,
    val saudiArabiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val unitedArabEmiratesAnnual: BigDecimal? = BigDecimal.ZERO,
    val southAfricaAnnual: BigDecimal? = BigDecimal.ZERO,
    val nigeriaAnnual: BigDecimal? = BigDecimal.ZERO,
    val egyptAnnual: BigDecimal? = BigDecimal.ZERO,
    val japanAnnual: BigDecimal? = BigDecimal.ZERO,
    val chinaAnnual: BigDecimal? = BigDecimal.ZERO,
    val hongKongAnnual: BigDecimal? = BigDecimal.ZERO,
    val taiwanAnnual: BigDecimal? = BigDecimal.ZERO,
    val australiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val indiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val southKoreaAnnual: BigDecimal? = BigDecimal.ZERO,
    val singaporeAnnual: BigDecimal? = BigDecimal.ZERO,
    val indonesiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val malaysiaAnnual: BigDecimal? = BigDecimal.ZERO,
    val thailandAnnual: BigDecimal? = BigDecimal.ZERO,
    val philippinesAnnual: BigDecimal? = BigDecimal.ZERO,
    val vietnamAnnual: BigDecimal? = BigDecimal.ZERO,
    val newZealandAnnual: BigDecimal? = BigDecimal.ZERO,
    val otherCountryAnnual: BigDecimal? = BigDecimal.ZERO
)

data class CumulativePnLAttributionByCountryVo(
    // --------------------- 所有地区的Cumulative ---------------------------
    val uSCumulative: BigDecimal? = BigDecimal.ZERO,
    val canadaCumulative: BigDecimal? = BigDecimal.ZERO,
    val brazilCumulative: BigDecimal? = BigDecimal.ZERO,
    val mexicoCumulative: BigDecimal? = BigDecimal.ZERO,
    val argentinaCumulative: BigDecimal? = BigDecimal.ZERO,
    val chileCumulative: BigDecimal? = BigDecimal.ZERO,
    val colombiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val peruCumulative: BigDecimal? = BigDecimal.ZERO,
    val uKCumulative: BigDecimal? = BigDecimal.ZERO,
    val germanyCumulative: BigDecimal? = BigDecimal.ZERO,
    val franceCumulative: BigDecimal? = BigDecimal.ZERO,
    val switzerlandCumulative: BigDecimal? = BigDecimal.ZERO,
    val netherlandsCumulative: BigDecimal? = BigDecimal.ZERO,
    val italyCumulative: BigDecimal? = BigDecimal.ZERO,
    val spainCumulative: BigDecimal? = BigDecimal.ZERO,
    val swedenCumulative: BigDecimal? = BigDecimal.ZERO,
    val saudiArabiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val unitedArabEmiratesCumulative: BigDecimal? = BigDecimal.ZERO,
    val southAfricaCumulative: BigDecimal? = BigDecimal.ZERO,
    val nigeriaCumulative: BigDecimal? = BigDecimal.ZERO,
    val egyptCumulative: BigDecimal? = BigDecimal.ZERO,
    val japanCumulative: BigDecimal? = BigDecimal.ZERO,
    val chinaCumulative: BigDecimal? = BigDecimal.ZERO,
    val hongKongCumulative: BigDecimal? = BigDecimal.ZERO,
    val taiwanCumulative: BigDecimal? = BigDecimal.ZERO,
    val australiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val indiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val southKoreaCumulative: BigDecimal? = BigDecimal.ZERO,
    val singaporeCumulative: BigDecimal? = BigDecimal.ZERO,
    val indonesiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val malaysiaCumulative: BigDecimal? = BigDecimal.ZERO,
    val thailandCumulative: BigDecimal? = BigDecimal.ZERO,
    val philippinesCumulative: BigDecimal? = BigDecimal.ZERO,
    val vietnamCumulative: BigDecimal? = BigDecimal.ZERO,
    val newZealandCumulative: BigDecimal? = BigDecimal.ZERO,
    val otherCountryCumulative: BigDecimal? = BigDecimal.ZERO
)

data class AnnualPnLAttributionBySectorVo(
    val consumerStaplesAnnual: BigDecimal? = BigDecimal.ZERO,
    val consumerDiscretionaryAnnual: BigDecimal? = BigDecimal.ZERO,
    val informationTechnologyAnnual: BigDecimal? = BigDecimal.ZERO,
    val financialsAnnual: BigDecimal? = BigDecimal.ZERO,
    val healthCareAnnual: BigDecimal? = BigDecimal.ZERO,
    val industrialsAnnual: BigDecimal? = BigDecimal.ZERO,
    val utilitiesAnnual: BigDecimal? = BigDecimal.ZERO,
    val materialsAnnual: BigDecimal? = BigDecimal.ZERO,
    val realEstateAnnual: BigDecimal? = BigDecimal.ZERO,
    val energyAnnual: BigDecimal? = BigDecimal.ZERO,
    val communicationServiceAnnual: BigDecimal? = BigDecimal.ZERO,
    val indexETFAnnual: BigDecimal? = BigDecimal.ZERO,
    val cashAnnual: BigDecimal? = BigDecimal.ZERO,
    val othersAnnual: BigDecimal? = BigDecimal.ZERO
)

data class CumulativePnLAttributionBySectorVo(
    val consumerStaplesCumulative: BigDecimal? = BigDecimal.ZERO,
    val consumerDiscretionaryCumulative: BigDecimal? = BigDecimal.ZERO,
    val informationTechnologyCumulative: BigDecimal? = BigDecimal.ZERO,
    val financialsCumulative: BigDecimal? = BigDecimal.ZERO,
    val healthCareCumulative: BigDecimal? = BigDecimal.ZERO,
    val industrialsCumulative: BigDecimal? = BigDecimal.ZERO,
    val utilitiesCumulative: BigDecimal? = BigDecimal.ZERO,
    val materialsCumulative: BigDecimal? = BigDecimal.ZERO,
    val realEstateCumulative: BigDecimal? = BigDecimal.ZERO,
    val energyCumulative: BigDecimal? = BigDecimal.ZERO,
    val communicationServiceCumulative: BigDecimal? = BigDecimal.ZERO,
    val indexETFCumulative: BigDecimal? = BigDecimal.ZERO,
    val cashCumulative: BigDecimal? = BigDecimal.ZERO,
    val othersCumulative: BigDecimal? = BigDecimal.ZERO
)

data class AnnualPnLAttributionByMarketCapVo(
    val bigger10bnAnnual: BigDecimal? = BigDecimal.ZERO,
    val fiveTo10bnAnnual: BigDecimal? = BigDecimal.ZERO,
    val oneTo5bnAnnual: BigDecimal? = BigDecimal.ZERO,
    val zeroPointThreeToOneAnnual: BigDecimal? = BigDecimal.ZERO,
    val litterZeroPointThreebnAnnual: BigDecimal? = BigDecimal.ZERO
)

data class CumulativePnLAttributionByMarketCapVo(
    val bigger10bnCumulative: BigDecimal? = BigDecimal.ZERO,
    val fiveTo10bnCumulative: BigDecimal? = BigDecimal.ZERO,
    val oneTo5bnCumulative: BigDecimal? = BigDecimal.ZERO,
    val zeroPointThreeToOneCumulative: BigDecimal? = BigDecimal.ZERO,
    val litterZeroPointThreebnCumulative: BigDecimal? = BigDecimal.ZERO
)

data class AnnualPnLAttributionByAssetClassVo(
    val equitiesAnnual: BigDecimal? = BigDecimal.ZERO,
    val fixedIncomeAnnual: BigDecimal? = BigDecimal.ZERO,
    val currenciesFXAnnual: BigDecimal? = BigDecimal.ZERO,
    val commoditiesAnnual: BigDecimal? = BigDecimal.ZERO,
    val alternativeInvestmentsAnnual: BigDecimal? = BigDecimal.ZERO,
    val realEstateAssetClassAnnual: BigDecimal? = BigDecimal.ZERO,
    val otherAssetClassAnnual: BigDecimal? = BigDecimal.ZERO
)

data class CumulativePnLAttributionByAssetClassVo(
    val equitiesCumulative: BigDecimal? = BigDecimal.ZERO,
    val fixedIncomeCumulative: BigDecimal? = BigDecimal.ZERO,
    val currenciesFXCumulative: BigDecimal? = BigDecimal.ZERO,
    val commoditiesCumulative: BigDecimal? = BigDecimal.ZERO,
    val alternativeInvestmentsCumulative: BigDecimal? = BigDecimal.ZERO,
    val realEstateAssetClassCumulative: BigDecimal? = BigDecimal.ZERO,
    val otherAssetClassCumulative: BigDecimal? = BigDecimal.ZERO
)

data class TopAnnualPnlDriversVo(
    val annualWinner1Name: String? = null,
    val annualWinner1Return: BigDecimal? = null,
    val annualWinner2Name: String? = null,
    val annualWinner2Return: BigDecimal? = null,
    val annualWinner3Name: String? = null,
    val annualWinner3Return: BigDecimal? = null,
    val annualWinner4Name: String? = null,
    val annualWinner4Return: BigDecimal? = null,
    val annualWinner5Name: String? = null,
    val annualWinner5Return: BigDecimal? = null,
    val annualWinner6Name: String? = null,
    val annualWinner6Return: BigDecimal? = null,
    val annualWinner7Name: String? = null,
    val annualWinner7Return: BigDecimal? = null,
    val annualWinner8Name: String? = null,
    val annualWinner8Return: BigDecimal? = null,
    val annualWinner9Name: String? = null,
    val annualWinner9Return: BigDecimal? = null,
    val annualWinner10Name: String? = null,
    val annualWinner10Return: BigDecimal? = null,
    val annualLoser1Name: String? = null,
    val annualLoser1Return: BigDecimal? = null,
    val annualLoser2Name: String? = null,
    val annualLoser2Return: BigDecimal? = null,
    val annualLoser3Name: String? = null,
    val annualLoser3Return: BigDecimal? = null,
    val annualLoser4Name: String? = null,
    val annualLoser4Return: BigDecimal? = null,
    val annualLoser5Name: String? = null,
    val annualLoser5Return: BigDecimal? = null,
    val annualLoser6Name: String? = null,
    val annualLoser6Return: BigDecimal? = null,
    val annualLoser7Name: String? = null,
    val annualLoser7Return: BigDecimal? = null,
    val annualLoser8Name: String? = null,
    val annualLoser8Return: BigDecimal? = null,
    val annualLoser9Name: String? = null,
    val annualLoser9Return: BigDecimal? = null,
    val annualLoser10Name: String? = null,
    val annualLoser10Return: BigDecimal? = null
)

data class TopMonthlyPnlWinnersVo(
    val monthlyWinner1Name: String? = null,
    val monthlyWinner1Return: BigDecimal? = null,
    val monthlyWinner2Name: String? = null,
    val monthlyWinner2Return: BigDecimal? = null,
    val monthlyWinner3Name: String? = null,
    val monthlyWinner3Return: BigDecimal? = null,
    val monthlyWinner4Name: String? = null,
    val monthlyWinner4Return: BigDecimal? = null,
    val monthlyWinner5Name: String? = null,
    val monthlyWinner5Return: BigDecimal? = null,
    val monthlyWinner6Name: String? = null,
    val monthlyWinner6Return: BigDecimal? = null,
    val monthlyWinner7Name: String? = null,
    val monthlyWinner7Return: BigDecimal? = null,
    val monthlyWinner8Name: String? = null,
    val monthlyWinner8Return: BigDecimal? = null,
    val monthlyWinner9Name: String? = null,
    val monthlyWinner9Return: BigDecimal? = null,
    val monthlyWinner10Name: String? = null,
    val monthlyWinner10Return: BigDecimal? = null
)

data class TopMonthlyPnlLosersVo(
    val monthlyLoser1Name: String? = null,
    val monthlyLoser1Return: BigDecimal? = null,
    val monthlyLoser2Name: String? = null,
    val monthlyLoser2Return: BigDecimal? = null,
    val monthlyLoser3Name: String? = null,
    val monthlyLoser3Return: BigDecimal? = null,
    val monthlyLoser4Name: String? = null,
    val monthlyLoser4Return: BigDecimal? = null,
    val monthlyLoser5Name: String? = null,
    val monthlyLoser5Return: BigDecimal? = null,
    val monthlyLoser6Name: String? = null,
    val monthlyLoser6Return: BigDecimal? = null,
    val monthlyLoser7Name: String? = null,
    val monthlyLoser7Return: BigDecimal? = null,
    val monthlyLoser8Name: String? = null,
    val monthlyLoser8Return: BigDecimal? = null,
    val monthlyLoser9Name: String? = null,
    val monthlyLoser9Return: BigDecimal? = null,
    val monthlyLoser10Name: String? = null,
    val monthlyLoser10Return: BigDecimal? = null
)
        